1. Field of the Invention
This invention relates in general to printing systems, and more particularly to a method and apparatus for detecting and processing print jobs that request backchannel data.
2. Description of Related Art
Printers receive print data from a source, such as a single host computer or from a network that contains at least one host computer or network server. One recent development is the addition of a “memory option,” which is an internal memory device such as RAM (Random Access Memory) or a hard disk drive, where files may be stored prior to a print operation. In some conventional printers, the memory device (e.g., hard disk) is of a sufficient size to store many print jobs at one time. Moreover, the “normal” temporary memory storage device (i.e., typically volatile RAM) used to store incoming print jobs may also be of a sufficient size to store many print jobs at one time, even as the printer is in the process of printing an earlier-received print job.
In typical desktop personal computer (PC) environments, a printer may contain one or more attachments over which print data is received. Attachments may be physical or logical. Print jobs are submitted (via either a direct connection or via a network) to a printer that contains sufficient memory to accept more than one entire print job, and by using this capability, a quick “screen release” is achieved. The term “screen release” represents the concept that, once a print job is accepted by a printer, the desk top PC is “released” by that printer, and the PC is no longer waiting for the printer to continue accepting the data. Until conventional printers accept all of the data for a particular print job from the host computer (i.e., the PC), the host computer can be unusable by its human user (“locked up”) until the active printing session is complete. An active printing session becomes “complete” generally when the print job has been completely accepted by the printer. At that time, the printer's software communicates to the host PC's software that the job has been accepted.
The desire to achieve a quick screen release has produced various solutions in the printer field of art. One conventional solution is to implement a “print spooler” in various operating systems, including PC operating systems (e.g., Microsoft Windows 95™, IBM OS/2™), as well as network operating systems (e.g., Novell Netware™, and IBM LAN Server™). Another conventional solution is to add more memory to the printers so as to allow the printers to completely accept various print jobs long before they are physically printed.
In a printer, a hard disk may be used as a spooling device. In general, an incoming job may be directed to the hard disk (spooled), or it may be directed to the print engine, or the transmission of job data may be temporarily suspended. When an incoming print job is spooled, jobs directed to the spooler are processed at a later time, consequently the receipt of the job is separated from the processing of the job. The processing that is deferred involves the interpretation of the data stream and generation of printed material. The delay between job receipt and job interpretation is dependent upon the availability of the print engine and other factors, and is not predictable.
Some types of jobs, and some print channels, do not work correctly when a job is directed to the spooler. Depending on the content of the data stream, the interpretation process may result in the generation of backchannel information by the interpreter for transmission back to the job submitter. Jobs that request backchannel data are incompatible with a spooler due to the separation of job receipt and job processing. The submitting system transmits some or all of the print data to the printer and waits for a response. If the job is spooled, then the printer expects to receive the entire job and process it at a later time. In this case, the system submitting the job and the printer are out of synchronization. This type of problem is typically corrected by manually configuring the printer not to spool jobs from sources that are known to request backchannel data. However, this solution requires the printer to avoid spooling any job deriving from sources known to request backchannel data, even when a particular job deriving from that source does not request backchannel data and may be spooled.
In systems where a printer is shared among several workstations, it is desirable to handle print job cancellation as quickly as possible, so that the cancellation of one job does not delay the processing of another job. In a printer, job cancellation is performed by purging all internal print data for the job, and all subsequent data for the job that the printer receives. The printer does not examine or interpret any job data from the point of the job cancellation request through the remainder of the job. Jobs that request backchannel data are incompatible with a fast job cancellation method because all print data, including any requests for printer information that generates backchannel data, is purged from the point of job cancellation to the end of job. This type of problem is typically handled by avoiding implementation of fast job cancellation. However, this solution slows down the cancellation for every job, regardless of whether or not the job is one that requests backchannel communication.
Print jobs requesting backchannel data communication present problems in systems where several workstations use a shared printer. Prior art solutions do not distinguish between print jobs requiring backchannel data communication and those that do not require such communication. Consequently, every print job from a channel known to submit print jobs requesting backchannel data must be immediately processed rather than spooled. Furthermore, fast job cancellation is not possible when jobs requesting backchannel data communication cannot be distinguished from jobs that do not request such communication.
It can be seen there is a need for a method and apparatus for detecting print jobs that request backchannel data so that print jobs can be processed more efficiently, both in the initial routing of a job, and in cancellation of a job.